package com.fjl.list.leetcode59;

/**
 * @Description
 * @Author: 01195
 * @Date: 2025/3/19 11:12
 */
/*
给你一个正整数 n ，生成一个包含 1 到 n的平方 所有元素，且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
 */
public class Clazz {
    public int[][] generateMatrix(int n) {
        int[][] matrix = new int[n][n];
        int upper_bound = 0, lower_bound = n - 1;
        int left_bound = 0, right_bound = n - 1;
        int value = 1;
        while (value <= n * n) {
            if (upper_bound <= lower_bound) {
                for (int j = left_bound; j <= right_bound; j++) {
                    matrix[upper_bound][j] = value;
                    value++;
                }
                // 上边界下移
                upper_bound++;
            }
            if (left_bound <= right_bound) {
                for (int i = upper_bound; i <= lower_bound; i++) {
                    matrix[i][right_bound] = value;
                    value++;
                }
                // 右边界左移
                right_bound--;
            }
            if (upper_bound <= lower_bound) {
                for (int j = right_bound; j >= left_bound; j--) {
                    matrix[lower_bound][j] = value;
                    value++;
                }
                // 下边界上移
                lower_bound--;
            }
            if (left_bound <= right_bound) {
                for (int i = lower_bound; i >= upper_bound; i--) {
                    matrix[i][left_bound] = value;
                    value++;
                }
                // 左边界右移
                left_bound++;
            }
        }
        return matrix;
    }
}
